package com.compty.core.utils;

public class StringEncoder {

	/**
	 * 转换为HTML编码.<br>
	 */
	public static String htmlEncoder(String src) throws Exception {
		if (src == null || src.equals("")) {
			return "";
		}

		String dst = src;
		dst = dst.replaceAll("<", "&lt;");
		dst = dst.replaceAll(">", "&rt;");
		dst = dst.replaceAll("\"", "&quot;");
		dst = dst.replaceAll("'", "&#039;");
		dst = dst.replaceAll("&", "&amp;");
		dst = dst.replaceAll("\\?","&#63;");
		dst = dst.replaceAll("=", "&#61;");
		dst = dst.replaceAll("%", "&#37;");

		return dst;
	}

	/**
	 * 转换为HTML文字编码.<br>
	 */
	public static String htmlTextEncoder(String src) throws Exception {
		if (src == null || src.equals("")) {
			return "";
		}

		String dst = src;
		dst = dst.replaceAll("<", "&lt;");
		dst = dst.replaceAll(">", "&rt;");
		dst = dst.replaceAll("\"", "&quot;");
		dst = dst.replaceAll("'", "&#039;");
		dst = dst.replaceAll(" ", "&nbsp;");
		dst = dst.replaceAll("\r\n", "<br>");
		dst = dst.replaceAll("\r", "<br>");
		dst = dst.replaceAll("\n", "<br>");

		return dst;
	}
	
	public static String dealOriginalText(String src) throws Exception {
		if (src == null || src.equals("")) {
			return "";
		}

		String dst = src.replaceAll("\r\n", "\n");
		StringBuffer sb = new StringBuffer("<ul class='out'><li>");
		char[] charArray = dst.toCharArray();
		for (int i = 0; i < charArray.length; i++) {
			if(charArray[i] == '\r' || charArray[i] == '\n'){
				if( i == charArray.length -1 ){
					sb.append("</li>");
				}else{
					sb.append("</li><li>");
				}
			}else{
				sb.append(charArray[i]);
				if( i == charArray.length -1 ){
					sb.append("</li>");
				}
			}
		}

		sb.append("</ul>");
		return sb.toString();
	}

	/**
	 * 转换为URL编码.<br>
	 */
	public static String urlEncoder(String src, String enc) throws Exception {
		return java.net.URLEncoder.encode(src, enc);
	}

	/**
	 * 转换为XML编码.<br>
	 */
	public static String xmlEncoder(String src) throws Exception {
		if (src == null || src.equals("")) {
			return "";
		}

		String dst = src;
		dst = dst.replaceAll("&", "&amp;");
		dst = dst.replaceAll("<", "&lt;");
		dst = dst.replaceAll(">", "&gt;");
		dst = dst.replaceAll("\"", "&quot;");
		dst = dst.replaceAll("\'", "&acute;");

		return dst;
	}

	/**
	 * 转换为SQL编码.<br>
	 */
	public static String sqlEncoder(String src) throws Exception {
		if (src == null || src.equals("")) {
			return "";
		}

		return src.replaceAll("'", "''");
	}

	/**
	 * 转换为javascript编码.<br>
	 */
	public static String jsEncoder(String src) throws Exception {
		if (src == null || src.equals("")) {
			return "";
		}

		String dst = src;
		dst = dst.replaceAll("'", "\\'");
		dst = dst.replaceAll("\"", "\\\"");
		// dst = replaceAll(dst, "\r\n", "\\\n"); // 和\n转换有冲突
		dst = dst.replaceAll("\n", "\\\n");
		dst = dst.replaceAll("\r", "\\\n");

		return dst;
	}
}
